Conversation
The CI test test_co2_linear_rotor has been failing sporadically with
"TypeError: '<' not supported between instances of 'complex' and 'complex'"
raised from arkane/common.py:get_principal_moments_of_inertia. CO2 (and any
linear molecule) has a doubly-degenerate eigenvalue in its inertia tensor,
and np.linalg.eig's generic routine occasionally returns a complex128 array
with tiny imaginary noise on degenerate spectra. The downstream sorted()
call then chokes on complex comparison. Whether the noise is exactly zero
depends on input rounding, which is why the failure is flaky.
The inertia tensor is real and symmetric by construction so np.linalg.eigh
is the right routine: it is specialised
for symmetric/Hermitian matrices, guarantees real eigenvalues, and is what
arkane/statmech.py already uses for analogous diagonalisations. The fix is
applied in two places that had the same latent bug:
* arkane/common.py:get_principal_moments_of_inertia — directly hits the
sort and is the path that triggered the CI failure.
* rmgpy/statmech/conformer.pyx:Conformer.get_principal_moments_of_inertia
— same construction, same risk; would silently return complex-typed
moments for linear species and pass them to downstream consumers.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…misidentification Cantera's Python API, when constructing ct.Reaction from reactants/products dicts, silently re-interprets any species with net-zero stoichiometry (equal count on both sides — a spectator or surface catalyst) as a third-body collider. This mutates input_data: the equation string has the spectator's stoichiometry doubled and a spurious 'efficiencies' entry is added. The corrupted YAML cannot be round-tripped. This affects all rate types (ArrheniusRate, InterfaceArrheniusRate, StickingArrheniusRate, PlogRate, ChebyshevRate) and is reproducible on Cantera 3.1.0 and 3.2.0. A bug report has been filed with the Cantera project. Fix: replace the reactants/products dict form of ct.Reaction with the equation-string form for all non-third-body reaction types. Passing an equation string avoids the misidentification entirely. ThirdBody, Troe, and Lindemann reactions are left using the dict form because they require the third_body= keyword parameter, and their species do not appear on both sides so the bug does not affect them. A nested helper _ct_equation() is added inside to_cantera() to build the equation string from the already-computed ct_reactants / ct_products dicts. Also adds a regression test (test_reaction_to_dicts_surface_spectator_species) that verifies no 'efficiencies' key and no doubled stoichiometry appear for a SurfaceArrhenius reaction where the same surface species appears on both sides. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
defines base elements from existing list, but also includes custom elements and surface site as done in cantera1 method
Replaces the ad-hoc sum over atoms with the existing Molecule API method, and only emits the 'sites' field when a species occupies more than one site (monodentate adsorbates with sites=1 don't need the field). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…annotated file The way things are set up currently, transport notes belong in annotated output only. The previous commit removed the verbose guards, to match the ck2yaml version. Yes, we want them consistent, but for now make it so the non-annotated yaml files have no comments/notes, in any version. Instead: restore if-verbose gating in both yaml_cantera1 and yaml_cantera2, and strip transport notes from cantera_from_ck/chem.yaml after ck2yaml generates it when verbose_comments is False, so all three non-annotated files are consistent. To remove them from the ck2yaml-generated file, we can use a regex to remove 'note:' lines and their indented continuations . Avoieds yaml.safe_load + yaml.dump (which reformats the whole file) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…res cantera2 writer to ck2yaml as is done for cantera1
…haviour Two tests were written against the original (ungated) transport note behaviour and against sites=1 being emitted for monodentate species: - Rename and invert the transport note tests: note must be absent when verbose=False and present when verbose=True. - Single-site surface species should have no 'sites' key (Cantera defaults to 1); only bidentate+ species emit the field. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
These files are generated on the fly by running the mainTest functional test. Committing them bakes in machine-specific paths and database-version-dependent thermo coefficients that drift over time. The comparison test already skips gracefully when the files are absent, so CI is unaffected. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The destination directories under test/rmgpy/test_data/yaml_writer_data/ (cantera1, cantera2, ck2yaml) are not guaranteed to exist on a fresh checkout: we recently removed the committed golden YAML files leaving the subdirectories empty. Git does not track empty directories, so CI failed Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Both Cantera YAML writers and the Chemkin writer were emitting a hardcoded periodic-table grab-bag (H, C, O, N, Ne, Ar, He, Si, S, F, Cl, Br, I plus D/T/CI/OI isotopes plus X) in every output file, regardless of what the model actually contained. This polluted the files and caused diffs against ck2yaml-converted reference outputs. Add ReactionModel.get_elements() that walks each species' molecule[0] atoms and returns the set of Element singletons in use. All three writers now derive their elements block from that set: built-in elements appear only when present; isotopes (D, T, CI, OI) appear only when an isotope atom is on some species; X appears only for surface models. Writer 2's is_plasma path still adds the E pseudo-element without iterating atoms. In chemkin.pyx save_chemkin, the union is computed once across all species before the surface/gas split so that the gas-only Chemkin file in a surface run still lists X (required for downstream ck2yaml conversion to recognize the surface site element). We could cache this list of elements, either updated once per save_all() call, or even just once after model initiation (since no chemistry can create an element that wasn't already there). But that is not done yet. (For simplicity) Side cleanups: drop the unused search_for_additional_elements branch in writer 2 (the new design subsumes it); replace writer 2's inline MixedModel with a real ReactionModel so .get_elements() works without duck typing; remove the module-import-time ELEMENTS_BLOCK/ELEMENTS_LINE globals in writer 1 in favor of per-call computation. Mock containers in the writer 2 tests now inherit ReactionModel for the same reason. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Previously, cantera_from_ck/ was created lazily and never cleaned up between runs, so stale files from a previous job could persist in a re-used output directory. cantera1/ and cantera2/ were wiped when their writers were initialized but left untouched when the writers were disabled, again allowing stale files to mislead the user. This change: - Adds cantera_from_ck/ to the dirs ChemkinWriter wipes/creates - In register_listeners, deletes the chemkin/, cantera_from_ck/, cantera1/, and cantera2/ folders when their respective writers are not configured for this run. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
We recently added a required elements_in_use argument to Chemkin's write_elements_section but only updated the in-tree caller in chemkin.pyx. Arkane's chem.inp writer in arkane/main.py was still calling it with just the file handle, which broke the conda_build test that runs Arkane. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The Cantera YAML writers were emitting a top-level 'elements:' block even when only Cantera's built-in elements (H, C, O, ...) were in use, which ck2yaml never does. Also in yaml_cantera1, get_elements_block prepended an "elements:" header with no trailing newline Both writers now omit the block entirely when there are no non-builtin entries. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Regression Testing Results
Detailed regression test results.Regression test aromatics:Reference: Execution time (DD:HH:MM:SS): 00:00:00:56 aromatics Passed Core Comparison ✅Original model has 15 species. aromatics Failed Edge Comparison ❌Original model has 106 species. Non-identical thermo! ❌
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)CsCs) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-CsCsHH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + polycyclic(s2_4_4_ene_1) + polycyclic(s2_4_5_diene_1_5) + polycyclic(s3_4_5_ene_1) - ring(Cyclobutene) - ring(Cyclobutane) - ring(Cyclopentene) + radical(bicyclo[2.1.1]hex-2-ene-C5) Non-identical thermo! ❌
thermo: Thermo group additivity estimation: group(Cs-CsCsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsHH) + group(Cds- Cds(Cds-Cds)Cs) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + polycyclic(s2_3_5_ene_1) + polycyclic(s2_3_6_ene_1) + Estimated bicyclic component: polycyclic(s3_5_6_ane) - ring(Cyclohexane) - ring(Cyclopentane) + ring(Cyclohexene) + ring(Cyclopentene) - ring(Cyclopropane) - ring(Cyclopentene) - ring(Cyclohexene) + radical(cyclopentene-allyl) Non-identical thermo! ❌
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)(Cds-Cds)(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)(Cds-Cds)) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + group(Cds-Cds(Cds-Cds)H) + group(Cds-CdsCsH) + group(Cdd-CdsCds) + Estimated bicyclic component: polycyclic(s4_6_6_ane) - ring(Cyclohexane) - ring(Cyclohexane) + ring(124cyclohexatriene) + ring(124cyclohexatriene) Non-identical thermo! ❌
thermo: Thermo group additivity estimation: group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-(Cds-Cds)CsCsH) + group(Cs-CsCsHH) + group(Cds- Cds(Cds-Cds)Cs) + group(Cds-CdsCsH) + group(Cds-CdsCsH) + group(Cds-Cds(Cds-Cds)H) + polycyclic(s2_4_4_ene_1) + polycyclic(s3_4_6_diene_1_5) + polycyclic(s3_4_6_ene_1) - ring(Cyclobutene) - ring(Cyclobutane) - ring(Cyclohexene) + radical(cyclobutane) Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Non-identical kinetics! ❌
kinetics: Errors occurred during edge comparison
ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py aromatics-edge stable_regression_results/aromatics/chemkin/chem_edge_annotated.inp stable_regression_results/aromatics/chemkin/species_edge_dictionary.txt test/regression/aromatics/chemkin/chem_edge_annotated.inp test/regression/aromatics/chemkin/species_edge_dictionary.txt` failed. (See above for error)
|
| k(1bar) | 300K | 400K | 500K | 600K | 800K | 1000K | 1500K | 2000K |
|---|---|---|---|---|---|---|---|---|
| k(T): | 8.02 | 7.64 | 7.35 | 7.11 | 6.75 | 6.48 | 5.99 | 5.64 |
| k(T): | 3.54 | 4.28 | 4.73 | 5.02 | 5.39 | 5.62 | 5.91 | 6.06 |
kinetics: Arrhenius(A=(3.18266e+20,'cm^3/(mol*s)'), n=-2.694, Ea=(-0.265,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing in family Peroxyl_Disproportionation.""")
kinetics: Arrhenius(A=(3.2e+12,'cm^3/(mol*s)'), n=0, Ea=(4.064,'kcal/mol'), T0=(1,'K'), comment="""Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing_Ext-5R-R in family Peroxyl_Disproportionation.""")
kinetics: Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing in family Peroxyl_Disproportionation.
kinetics: Estimated from node Root_Ext-5R-R_7R!H->C_N-7C-inRing_Ext-5R-R in family Peroxyl_Disproportionation.
Errors occurred during edge comparison ⚠️
ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py liquid_oxidation-edge stable_regression_results/liquid_oxidation/chemkin/chem_edge_annotated.inp stable_regression_results/liquid_oxidation/chemkin/species_edge_dictionary.txt test/regression/liquid_oxidation/chemkin/chem_edge_annotated.inp test/regression/liquid_oxidation/chemkin/species_edge_dictionary.txt` failed. (See above for error)
Details
Observables Test Case: liquid_oxidation Comparison✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!
liquid_oxidation Passed Observable Testing ✅
Errors occurred during observable testing ⚠️
INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/liquid_oxidation/regression_input.py"...
INFO:root:options(
title='liquid_oxidation',
tolerance=0.1
)
observable(
label='pentane',
structure=SMILES('CCCCC')
)
species(
label='oxygen',
structure=SMILES('[O][O]'),
)
reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([1e3], 's'),
initialMoleFractionsList=[{
'pentane': 0.9,
'oxygen': 0.1,
}],
temperatures=([600], 'K'),
pressures=([1.0], 'bar'),
)
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
Regression test nitrogen:
Reference: Execution time (DD:HH:MM:SS): 00:00:01:00
Current: Execution time (DD:HH:MM:SS): 00:00:00:58
Reference: Memory used: 904.72 MB
Current: Memory used: 903.92 MB
nitrogen Failed Core Comparison ❌
Original model has 41 species.
Test model has 41 species. ✅
Original model has 360 reactions.
Test model has 359 reactions. ❌
The original model has 1 reactions that the tested model does not have. ❌
rxn: HNO(48) + HCO(13) <=> NO(38) + CH2O(18) origin: H_Abstraction
Errors occurred during core comparison ⚠️
ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py nitrogen-core stable_regression_results/nitrogen/chemkin/chem_annotated.inp stable_regression_results/nitrogen/chemkin/species_dictionary.txt test/regression/nitrogen/chemkin/chem_annotated.inp test/regression/nitrogen/chemkin/species_dictionary.txt` failed. (See above for error)
nitrogen Failed Edge Comparison ❌
Original model has 133 species.
Test model has 133 species. ✅
Original model has 983 reactions.
Test model has 981 reactions. ❌
The original model has 2 reactions that the tested model does not have. ❌
rxn: HNO(48) + HCO(13) <=> NO(38) + CH2O(18) origin: H_Abstraction
rxn: HON(T)(83) + HCO(13) <=> NO(38) + CH2O(18) origin: Disproportionation
Errors occurred during edge comparison ⚠️
ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py nitrogen-edge stable_regression_results/nitrogen/chemkin/chem_edge_annotated.inp stable_regression_results/nitrogen/chemkin/species_edge_dictionary.txt test/regression/nitrogen/chemkin/chem_edge_annotated.inp test/regression/nitrogen/chemkin/species_edge_dictionary.txt` failed. (See above for error)
Details
Observables Test Case: NC Comparison✅ All Observables varied by less than 0.200 on average between old model and new model in all conditions!
nitrogen Passed Observable Testing ✅
Errors occurred during observable testing ⚠️
INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/nitrogen/regression_input.py"...
INFO:root:
options(
title='NC',
tolerance=0.2
)
observable(
label='NC',
structure=SMILES("NC"),
)
observable(
label='OH',
structure=SMILES("[OH]"),
)
species(
label='O2',
structure=SMILES("[O][O]"),
)
species(
label='Ar',
structure=adjacencyList('1 Ar u0 p4 c0'),
)
reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([0.002],'s'),
initialMoleFractionsList=[{
"NC": 0.0005,
"O2": 0.002,
"Ar": 0.9975,
}],
temperatures=([1500],'K'),
pressures=([1.],'atm'),
)
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
Regression test oxidation:
Reference: Execution time (DD:HH:MM:SS): 00:00:01:36
Current: Execution time (DD:HH:MM:SS): 00:00:01:36
Reference: Memory used: 778.39 MB
Current: Memory used: 780.61 MB
oxidation Passed Core Comparison ✅
Original model has 59 species.
Test model has 59 species. ✅
Original model has 694 reactions.
Test model has 694 reactions. ✅
oxidation Passed Edge Comparison ✅
Original model has 230 species.
Test model has 230 species. ✅
Original model has 1524 reactions.
Test model has 1524 reactions. ✅
Details
Observables Test Case: Oxidation Comparison✅ All Observables varied by less than 0.500 on average between old model and new model in all conditions!
oxidation Passed Observable Testing ✅
Errors occurred during observable testing ⚠️
INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/oxidation/regression_input.py"...
INFO:root:options(
title = 'Oxidation',
tolerance = 0.5,
)
observables
observable(
label = 'OH',
structure=SMILES('[OH]'),
)
species definition used in the reactor setup specification
species(
label = 'OH',
structure=SMILES('[OH]'),
)
species(
label = 'N2',
structure=SMILES("N#N"),
)
species(
label = 'O2',
structure=SMILES('[O][O]'),
)
species(
label = 'propane',
structure=SMILES('CCC'),
)
reactor setups
reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([100.0],'s'),
initialMoleFractionsList=[{
"propane": 2.0/7.0,
"O2": 1.0,
"N2":4.0,
}],
temperatures=([725.0],'K'),
pressures=([10.0],'bar'),
)
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
WARNING:root:Initial mole fractions do not sum to one; normalizing.
INFO:root:
INFO:root:Original composition:
INFO:root:propane = 0.2857142857142857
INFO:root:O2 = 1.0
INFO:root:N2 = 4.0
INFO:root:
INFO:root:Normalized mole fractions:
INFO:root:propane = 0.05405405405405405
INFO:root:O2 = 0.1891891891891892
INFO:root:N2 = 0.7567567567567568
INFO:root:
Regression test sulfur:
Reference: Execution time (DD:HH:MM:SS): 00:00:00:40
Current: Execution time (DD:HH:MM:SS): 00:00:00:39
Reference: Memory used: 899.58 MB
Current: Memory used: 901.03 MB
sulfur Passed Core Comparison ✅
Original model has 27 species.
Test model has 27 species. ✅
Original model has 74 reactions.
Test model has 74 reactions. ✅
sulfur Failed Edge Comparison ❌
Original model has 89 species.
Test model has 89 species. ✅
Original model has 227 reactions.
Test model has 227 reactions. ✅
The original model has 1 reactions that the tested model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary
The tested model has 1 reactions that the original model does not have. ❌
rxn: O(4) + SO2(15) (+N2) <=> SO3(16) (+N2) origin: primarySulfurLibrary
Errors occurred during edge comparison ⚠️
ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py sulfur-edge stable_regression_results/sulfur/chemkin/chem_edge_annotated.inp stable_regression_results/sulfur/chemkin/species_edge_dictionary.txt test/regression/sulfur/chemkin/chem_edge_annotated.inp test/regression/sulfur/chemkin/species_edge_dictionary.txt` failed. (See above for error)
Details
Observables Test Case: SO2 Comparison✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!
sulfur Passed Observable Testing ✅
Errors occurred during observable testing ⚠️
INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/sulfur/regression_input.py"...
INFO:root:
options(
title='SO2',
tolerance=0.1
)
observable(
label='SO2',
structure=SMILES("O=S=O"),
)
species(
label='H2S',
structure=SMILES("S"),
)
species(
label='O2',
structure=SMILES("[O][O]"),
)
species(
label='N2',
structure=SMILES("N#N"),
)
reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([0.01],'s'),
initialMoleFractionsList=[{
"H2S": 0.000756,
"O2": 0.001290,
"N2": 0.997954}],
temperatures=([900],'K'),
pressures=([30.],'bar'),
)
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
Regression test superminimal:
Reference: Execution time (DD:HH:MM:SS): 00:00:00:25
Current: Execution time (DD:HH:MM:SS): 00:00:00:24
Reference: Memory used: 976.34 MB
Current: Memory used: 974.88 MB
superminimal Passed Core Comparison ✅
Original model has 13 species.
Test model has 13 species. ✅
Original model has 21 reactions.
Test model has 21 reactions. ✅
superminimal Passed Edge Comparison ✅
Original model has 18 species.
Test model has 18 species. ✅
Original model has 28 reactions.
Test model has 28 reactions. ✅
Regression test RMS_constantVIdealGasReactor_superminimal:
Reference: Execution time (DD:HH:MM:SS): 00:00:02:17
Current: Execution time (DD:HH:MM:SS): 00:00:02:47
Reference: Memory used: 2274.41 MB
Current: Memory used: 2481.12 MB
RMS_constantVIdealGasReactor_superminimal Passed Core Comparison ✅
Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅
RMS_constantVIdealGasReactor_superminimal Passed Edge Comparison ✅
Original model has 13 species.
Test model has 13 species. ✅
Original model has 19 reactions.
Test model has 19 reactions. ✅
Details
Observables Test Case: RMS_constantVIdealGasReactor_superminimal Comparison✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!
RMS_constantVIdealGasReactor_superminimal Passed Observable Testing ✅
Errors occurred during observable testing ⚠️
INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/RMS_constantVIdealGasReactor_superminimal/regression_input.py"...
INFO:root:
options(
title='RMS_constantVIdealGasReactor_superminimal',
tolerance=0.1
)
observable(
label='H2',
structure=SMILES("[H][H]"),
)
observable(
label='O2',
structure=SMILES("[O][O]"),
)
reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([0.01],'s'),
initialMoleFractionsList=[{
'H2':.67,
'O2':.33,
}],
temperatures=([1000],'K'),
pressures=([1.0],'bar'),
)
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
Regression test RMS_CSTR_liquid_oxidation:
Reference: Execution time (DD:HH:MM:SS): 00:00:18:42
Current: Execution time (DD:HH:MM:SS): 00:00:14:24
Reference: Memory used: 2705.08 MB
Current: Memory used: 2933.58 MB
RMS_CSTR_liquid_oxidation Failed Core Comparison ❌
Original model has 35 species.
Test model has 35 species. ✅
Original model has 146 reactions.
Test model has 177 reactions. ❌
The original model has 2 species that the tested model does not have. ❌
spc: CH3
spc: CC[CH]CCOO(64)
The tested model has 2 species that the original model does not have. ❌
spc: CCH2
spc: CC1CC(C)O1(87)
The original model has 7 reactions that the tested model does not have. ❌
rxn: CC[CH]CCOO(64) <=> CCCCCO[O](61) origin: intra_H_migration
rxn: [O]O(13) + CC[CH]CCOO(64) <=> oxygen(1) + CCCCCOO(78) origin: H_Abstraction
rxn: OO(23) + CC[CH]CCOO(64) <=> [O]O(13) + CCCCCOO(78) origin: H_Abstraction
rxn: CC[CH]CCOO(64) + CCCC(C)OO(25) <=> CCCC(C)O[O](21) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CC[CH]CCOO(64) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + CC[CH]CCOO(64) <=> C=CCCC(18) + CCCCCOO(78) origin: Disproportionation
rxn: [OH](26) + CCCCCOO(78) <=> H2O(42) + CC[CH]CCOO(64) origin: H_Abstraction
The tested model has 38 reactions that the original model does not have. ❌
rxn: oxygen(1) + H2O(42) <=> [OH](25) + [O]O(13) origin: H_Abstraction
rxn: [OH](25) + OO(23) <=> [O]O(13) + H2O(42) origin: H_Abstraction
rxn: [OH](25) + [CH2]CCCC(12) <=> H2O(42) + C=CCCC(18) origin: Disproportionation
rxn: [OH](25) + C[CH]CCC(11) <=> H2O(42) + C=CCCC(18) origin: Disproportionation
rxn: CC[CH]CC(7) + CCCC(C)O[O](22) <=> CC=CCC(16) + CCCC(C)OO(27) origin: Disproportionation
rxn: CC[CH]CC(7) + CCC(CC)O[O](20) <=> CC=CCC(16) + CCC(CC)OO(24) origin: Disproportionation
rxn: CC[CH]CC(7) + [CH2]CCCC(12) <=> CC=CCC(16) + pentane(2) origin: Disproportionation
rxn: CC[CH]CC(7) + CCCCCO[O](61) <=> CC=CCC(16) + CCCCCOO(78) origin: Disproportionation
rxn: CC[CH]CC(7) + C[CH]CC(C)OO(34) <=> CC=CCC(16) + CCCC(C)OO(27) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCC(C)O[O](22) <=> CC=CCC(16) + CCCC(C)OO(27) origin: Disproportionation
rxn: C[CH]CCC(11) + CCC(CC)O[O](20) <=> CC=CCC(16) + CCC(CC)OO(24) origin: Disproportionation
rxn: C[CH]CCC(11) + [CH2]CCCC(12) <=> CC=CCC(16) + pentane(2) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCCCO[O](61) <=> CC=CCC(16) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + C[CH]CC(C)OO(34) <=> CC=CCC(16) + CCCC(C)OO(27) origin: Disproportionation
rxn: CC[CH]CC(7) + C[CH]CC(C)OO(34) <=> CC=CC(C)OO(88) + pentane(2) origin: Disproportionation
rxn: C[CH]CCC(11) + C[CH]CC(C)OO(34) <=> CC=CC(C)OO(88) + pentane(2) origin: Disproportionation
rxn: CCCC(C)O[O](22) + C[CH]CC(C)OO(34) <=> CC=CC(C)OO(88) + CCCC(C)OO(27) origin: Disproportionation
rxn: CCC(CC)O[O](20) + C[CH]CC(C)OO(34) <=> CC=CC(C)OO(88) + CCC(CC)OO(24) origin: Disproportionation
rxn: CCCCCO[O](61) + C[CH]CC(C)OO(34) <=> CC=CC(C)OO(88) + CCCCCOO(78) origin: Disproportionation
rxn: [CH2]CC(CC)OO(38) + CCCC(C)OO(27) <=> C[CH]CC(C)OO(34) + CCC(CC)OO(24) origin: H_Abstraction
rxn: CC[CH]CC(7) + CCCCCOO(78) <=> C[CH]CCCOO(65) + pentane(2) origin: H_Abstraction
rxn: C[CH]CCCOO(65) + pentane(2) <=> C[CH]CCC(11) + CCCCCOO(78) origin: H_Abstraction
rxn: C[CH]CCCOO(65) + CCC(CC)OO(24) <=> CCC(CC)O[O](20) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCCCCOO(78) <=> C[CH]CCCOO(65) + pentane(2) origin: H_Abstraction
rxn: C[CH]CCCOO(65) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCCCOO(78) origin: H_Abstraction
rxn: C[CH]CCCOO(65) + CCCC(C)OO(27) <=> C[CH]CC(C)OO(34) + CCCCCOO(78) origin: H_Abstraction
rxn: [O]O(13) + CCCCCO[O](61) <=> oxygen(1) + [OH](25) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: CCCC(C)O[O](22) + CCCCCO[O](61) <=> oxygen(1) + CCCC(C)[O](41) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: CCCCCO[O](61) + CCCCCO[O](61) <=> oxygen(1) + CCCCC[O](79) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: CCC(CC)O[O](20) + CCCCCO[O](61) <=> oxygen(1) + CCC([O])CC(44) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: C[CH]CC(C)OO(34) <=> [OH](25) + CC1CC(C)O1(87) origin: Cyclic_Ether_Formation
rxn: C[CH2](6) + [CH2]CC(5) <=> pentane(2) origin: R_Recombination
rxn: [CH2]CCCCOO(66) + pentane(2) <=> CC[CH]CC(7) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(66) + pentane(2) <=> C[CH]CCC(11) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(66) + CCC(CC)OO(24) <=> CCC(CC)O[O](20) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(66) + pentane(2) <=> [CH2]CCCC(12) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(66) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(66) + CCCC(C)OO(27) <=> C[CH]CC(C)OO(34) + CCCCCOO(78) origin: H_Abstraction
Errors occurred during core comparison ⚠️
ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py RMS_CSTR_liquid_oxidation-core stable_regression_results/RMS_CSTR_liquid_oxidation/chemkin/chem_annotated.inp stable_regression_results/RMS_CSTR_liquid_oxidation/chemkin/species_dictionary.txt test/regression/RMS_CSTR_liquid_oxidation/chemkin/chem_annotated.inp test/regression/RMS_CSTR_liquid_oxidation/chemkin/species_dictionary.txt` failed. (See above for error)
RMS_CSTR_liquid_oxidation Failed Edge Comparison ❌
Original model has 99 species.
Test model has 107 species. ❌
Original model has 384 reactions.
Test model has 545 reactions. ❌
The tested model has 8 species that the original model does not have. ❌
spc: CCCCCOOOO(101)
spc: CCCC(C)OOO(102)
spc: CCCCCO(103)
spc: CCC[CH]CO(104)
spc: CCCCCOOO
spc: OOO(106)
spc: CCC(CC)OOO(107)
spc: CCCCCOOO(108)
The tested model has 161 reactions that the original model does not have. ❌
rxn: oxygen(1) + H2O(42) <=> [OH](25) + [O]O(13) origin: H_Abstraction
rxn: [OH](25) + OO(23) <=> [O]O(13) + H2O(42) origin: H_Abstraction
rxn: [OH](25) + [CH2]CCCC(12) <=> H2O(42) + C=CCCC(18) origin: Disproportionation
rxn: [OH](25) + C[CH]CCC(11) <=> H2O(42) + C=CCCC(18) origin: Disproportionation
rxn: CC[CH]CC(7) + CCCC(C)O[O](22) <=> CC=CCC(16) + CCCC(C)OO(27) origin: Disproportionation
rxn: CC[CH]CC(7) + CCC(CC)O[O](20) <=> CC=CCC(16) + CCC(CC)OO(24) origin: Disproportionation
rxn: CC[CH]CC(7) + [CH2]CCCC(12) <=> CC=CCC(16) + pentane(2) origin: Disproportionation
rxn: CC[CH]CC(7) + CCCCCO[O](61) <=> CC=CCC(16) + CCCCCOO(78) origin: Disproportionation
rxn: CC[CH]CC(7) + C[CH]CC(C)OO(34) <=> CC=CCC(16) + CCCC(C)OO(27) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCC(C)O[O](22) <=> CC=CCC(16) + CCCC(C)OO(27) origin: Disproportionation
rxn: C[CH]CCC(11) + CCC(CC)O[O](20) <=> CC=CCC(16) + CCC(CC)OO(24) origin: Disproportionation
rxn: C[CH]CCC(11) + [CH2]CCCC(12) <=> CC=CCC(16) + pentane(2) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCCCO[O](61) <=> CC=CCC(16) + CCCCCOO(78) origin: Disproportionation
rxn: C[CH]CCC(11) + C[CH]CC(C)OO(34) <=> CC=CCC(16) + CCCC(C)OO(27) origin: Disproportionation
rxn: CC[CH]CC(7) + C[CH]CC(C)OO(34) <=> CC=CC(C)OO(88) + pentane(2) origin: Disproportionation
rxn: C[CH]CCC(11) + C[CH]CC(C)OO(34) <=> CC=CC(C)OO(88) + pentane(2) origin: Disproportionation
rxn: CCCC(C)O[O](22) + C[CH]CC(C)OO(34) <=> CC=CC(C)OO(88) + CCCC(C)OO(27) origin: Disproportionation
rxn: CCC(CC)O[O](20) + C[CH]CC(C)OO(34) <=> CC=CC(C)OO(88) + CCC(CC)OO(24) origin: Disproportionation
rxn: CCCCCO[O](61) + C[CH]CC(C)OO(34) <=> CC=CC(C)OO(88) + CCCCCOO(78) origin: Disproportionation
rxn: [CH2]CC(CC)OO(38) + CCCC(C)OO(27) <=> C[CH]CC(C)OO(34) + CCC(CC)OO(24) origin: H_Abstraction
rxn: CC[CH]CC(7) + CCCCCOO(78) <=> C[CH]CCCOO(65) + pentane(2) origin: H_Abstraction
rxn: C[CH]CCCOO(65) + pentane(2) <=> C[CH]CCC(11) + CCCCCOO(78) origin: H_Abstraction
rxn: C[CH]CCCOO(65) + CCC(CC)OO(24) <=> CCC(CC)O[O](20) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCCCCOO(78) <=> C[CH]CCCOO(65) + pentane(2) origin: H_Abstraction
rxn: C[CH]CCCOO(65) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCCCOO(78) origin: H_Abstraction
rxn: C[CH]CCCOO(65) + CCCC(C)OO(27) <=> C[CH]CC(C)OO(34) + CCCCCOO(78) origin: H_Abstraction
rxn: [O]O(13) + CCCCCO[O](61) <=> oxygen(1) + [OH](25) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: CCCC(C)O[O](22) + CCCCCO[O](61) <=> oxygen(1) + CCCC(C)[O](41) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: CCCCCO[O](61) + CCCCCO[O](61) <=> oxygen(1) + CCCCC[O](79) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: CCC(CC)O[O](20) + CCCCCO[O](61) <=> oxygen(1) + CCC([O])CC(44) + CCCCC[O](79) origin: Peroxyl_Disproportionation
rxn: [CH2]CCCCOO(66) + pentane(2) <=> CC[CH]CC(7) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(66) + pentane(2) <=> C[CH]CCC(11) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(66) + CCC(CC)OO(24) <=> CCC(CC)O[O](20) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(66) + pentane(2) <=> [CH2]CCCC(12) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(66) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCCCOO(66) + CCCC(C)OO(27) <=> C[CH]CC(C)OO(34) + CCCCCOO(78) origin: H_Abstraction
rxn: H(8) + [OH](25) <=> H2O(42) origin: R_Recombination
rxn: C=CCCC(18) + CC[CH]CC(7) <=> C=CC[CH]C(69) + pentane(2) origin: H_Abstraction
rxn: C=CCCC(18) + CC[CH]CC(7) <=> [CH2]C=CCC(71) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCC=C(72) + pentane(2) <=> C=CCCC(18) + CC[CH]CC(7) origin: H_Abstraction
rxn: C=[C]CCC(73) + pentane(2) <=> C=CCCC(18) + CC[CH]CC(7) origin: H_Abstraction
rxn: [CH]=CCCC(74) + pentane(2) <=> C=CCCC(18) + CC[CH]CC(7) origin: H_Abstraction
rxn: CC[CH]CCOO(64) + pentane(2) <=> CC[CH]CC(7) + CCCCCOO(78) origin: H_Abstraction
rxn: CCC[CH]COO(63) + pentane(2) <=> CC[CH]CC(7) + CCCCCOO(78) origin: H_Abstraction
rxn: CC[CH]CC(7) + CCCCCOO(78) <=> CCCC[CH]OO(84) + pentane(2) origin: H_Abstraction
rxn: CC[CH]CC(7) + C[CH]CC(C)OO(34) <=> C=CCC(C)OO(89) + pentane(2) origin: Disproportionation
rxn: CC[CH]CC(7) + CCCC(C)[O](41) <=> CCCC(C)=O(31) + pentane(2) origin: Disproportionation
rxn: CC[CH]CC(7) + CCCC(C)[O](41) <=> CC=CCC(16) + CCCC(C)O(46) origin: Disproportionation
rxn: [O]O(13) + CCCCCO[O](61) <=> oxygen(1) + H2O(42) + CCCCC=O(62) origin: Peroxyl_Termination
rxn: [O]O(13) + CCCCCO[O](61) <=> CCCCCOOOO(101) origin: R_Recombination
rxn: [O]O(13) + CCCC(C)[O](41) <=> OO(23) + CCCC(C)=O(31) origin: Disproportionation
rxn: [O]O(13) + CCCC(C)[O](41) <=> oxygen(1) + CCCC(C)O(46) origin: H_Abstraction
rxn: [O]O(13) + CCCC(C)[O](41) <=> CCCC(C)OOO(102) origin: R_Recombination
rxn: C=CC[CH]C(69) + pentane(2) <=> C=CCCC(18) + C[CH]CCC(11) origin: H_Abstraction
rxn: C=CCCC(18) + C[CH]CCC(11) <=> [CH2]C=CCC(71) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCC=C(72) + pentane(2) <=> C=CCCC(18) + C[CH]CCC(11) origin: H_Abstraction
rxn: C=[C]CCC(73) + pentane(2) <=> C=CCCC(18) + C[CH]CCC(11) origin: H_Abstraction
rxn: [CH]=CCCC(74) + pentane(2) <=> C=CCCC(18) + C[CH]CCC(11) origin: H_Abstraction
rxn: CC[CH]CCOO(64) + pentane(2) <=> C[CH]CCC(11) + CCCCCOO(78) origin: H_Abstraction
rxn: CCC[CH]COO(63) + pentane(2) <=> C[CH]CCC(11) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCC[CH]OO(84) + pentane(2) <=> C[CH]CCC(11) + CCCCCOO(78) origin: H_Abstraction
rxn: C[CH]CCC(11) + C[CH]CC(C)OO(34) <=> C=CCC(C)OO(89) + pentane(2) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCC(C)[O](41) <=> CCCC(C)=O(31) + pentane(2) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCC(C)[O](41) <=> CC=CCC(16) + CCCC(C)O(46) origin: Disproportionation
rxn: C[CH]CCC(11) + CCCC(C)[O](41) <=> C=CCCC(18) + CCCC(C)O(46) origin: Disproportionation
rxn: CCCC(C)O[O](22) + CCCCCO[O](61) <=> oxygen(1) + CCCC(C)=O(31) + CCCCCO(103) origin: Peroxyl_Termination
rxn: CCCC(C)O[O](22) + CCCCCO[O](61) <=> oxygen(1) + CCCCC=O(62) + CCCC(C)O(46) origin: Peroxyl_Termination
rxn: C=CC[CH]C(69) + CCCC(C)OO(27) <=> C=CCCC(18) + CCCC(C)O[O](22) origin: H_Abstraction
rxn: C=CCCC(18) + CCCC(C)O[O](22) <=> [CH2]C=CCC(71) + CCCC(C)OO(27) origin: H_Abstraction
rxn: [CH2]CCC=C(72) + CCCC(C)OO(27) <=> C=CCCC(18) + CCCC(C)O[O](22) origin: H_Abstraction
rxn: C=[C]CCC(73) + CCCC(C)OO(27) <=> C=CCCC(18) + CCCC(C)O[O](22) origin: H_Abstraction
rxn: [CH]=CCCC(74) + CCCC(C)OO(27) <=> C=CCCC(18) + CCCC(C)O[O](22) origin: H_Abstraction
rxn: CCCC(C)O[O](22) + C[CH]CC(C)OO(34) <=> C=CCC(C)OO(89) + CCCC(C)OO(27) origin: Disproportionation
rxn: CCCC(C)[O](41) + CCCC(C)O[O](22) <=> CCCC(C)=O(31) + CCCC(C)OO(27) origin: Disproportionation
rxn: CCC(CC)O[O](20) + CCCCCO[O](61) <=> oxygen(1) + CCC(=O)CC(36) + CCCCCO(103) origin: Peroxyl_Termination
rxn: CCC(CC)O[O](20) + CCCCCO[O](61) <=> oxygen(1) + CCCCC=O(62) + CCC(O)CC(47) origin: Peroxyl_Termination
rxn: C=CC[CH]C(69) + CCC(CC)OO(24) <=> C=CCCC(18) + CCC(CC)O[O](20) origin: H_Abstraction
rxn: C=CCCC(18) + CCC(CC)O[O](20) <=> [CH2]C=CCC(71) + CCC(CC)OO(24) origin: H_Abstraction
rxn: [CH2]CCC=C(72) + CCC(CC)OO(24) <=> C=CCCC(18) + CCC(CC)O[O](20) origin: H_Abstraction
rxn: C=[C]CCC(73) + CCC(CC)OO(24) <=> C=CCCC(18) + CCC(CC)O[O](20) origin: H_Abstraction
rxn: [CH]=CCCC(74) + CCC(CC)OO(24) <=> C=CCCC(18) + CCC(CC)O[O](20) origin: H_Abstraction
rxn: CC[CH]CCOO(64) + CCC(CC)OO(24) <=> CCC(CC)O[O](20) + CCCCCOO(78) origin: H_Abstraction
rxn: CCC[CH]COO(63) + CCC(CC)OO(24) <=> CCC(CC)O[O](20) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCC[CH]OO(84) + CCC(CC)OO(24) <=> CCC(CC)O[O](20) + CCCCCOO(78) origin: H_Abstraction
rxn: CCC(CC)O[O](20) + C[CH]CC(C)OO(34) <=> C=CCC(C)OO(89) + CCC(CC)OO(24) origin: Disproportionation
rxn: CCCC(C)[O](41) + CCC(CC)O[O](20) <=> CCCC(C)=O(31) + CCC(CC)OO(24) origin: Disproportionation
rxn: C[CH]CC(C)OO(34) + CCCC(C)OO(27) <=> CCC[C](C)OO(54) + CCCC(C)OO(27) origin: H_Abstraction
rxn: CC[CH]C(C)OO(32) + CCCC(C)OO(27) <=> C[CH]CC(C)OO(34) + CCCC(C)OO(27) origin: H_Abstraction
rxn: [CH2]C(CCC)OO(33) + CCCC(C)OO(27) <=> C[CH]CC(C)OO(34) + CCCC(C)OO(27) origin: H_Abstraction
rxn: [CH2]CCC(C)OO(35) + CCCC(C)OO(27) <=> C[CH]CC(C)OO(34) + CCCC(C)OO(27) origin: H_Abstraction
rxn: C[CH]CC(C)OO(34) + CCC(CC)OO(24) <=> CC[C](CC)OO(58) + CCCC(C)OO(27) origin: H_Abstraction
rxn: C[CH]C(CC)OO(37) + CCCC(C)OO(27) <=> C[CH]CC(C)OO(34) + CCC(CC)OO(24) origin: H_Abstraction
rxn: C=CCCC(18) + [CH2]CCCC(12) <=> C=CC[CH]C(69) + pentane(2) origin: H_Abstraction
rxn: C=CCCC(18) + [CH2]CCCC(12) <=> [CH2]C=CCC(71) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCC=C(72) + pentane(2) <=> C=CCCC(18) + [CH2]CCCC(12) origin: H_Abstraction
rxn: C=[C]CCC(73) + pentane(2) <=> C=CCCC(18) + [CH2]CCCC(12) origin: H_Abstraction
rxn: [CH]=CCCC(74) + pentane(2) <=> C=CCCC(18) + [CH2]CCCC(12) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCCCCOO(78) <=> CC[CH]CCOO(64) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCCCCOO(78) <=> CCC[CH]COO(63) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCCCCOO(78) <=> CCCC[CH]OO(84) + pentane(2) origin: H_Abstraction
rxn: [CH2]CCCC(12) + CCCC(C)[O](41) <=> CCCC(C)=O(31) + pentane(2) origin: Disproportionation
rxn: [CH2]CCCC(12) + CCCC(C)[O](41) <=> C=CCCC(18) + CCCC(C)O(46) origin: Disproportionation
rxn: [OH](25) + C=CCCC(18) <=> H2O(42) + C=CC[CH]C(69) origin: H_Abstraction
rxn: [OH](25) + C=CCCC(18) <=> H2O(42) + [CH2]C=CCC(71) origin: H_Abstraction
rxn: [OH](25) + C=CCCC(18) <=> H2O(42) + [CH2]CCC=C(72) origin: H_Abstraction
rxn: [OH](25) + C=CCCC(18) <=> H2O(42) + C=[C]CCC(73) origin: H_Abstraction
rxn: [OH](25) + C=CCCC(18) <=> H2O(42) + [CH]=CCCC(74) origin: H_Abstraction
rxn: [OH](25) + C=CCCC(18) <=> [CH2]C(O)CCC(97) origin: R_Addition_MultipleBond
rxn: [OH](25) + C=CCCC(18) <=> CCC[CH]CO(104) origin: R_Addition_MultipleBond
rxn: [OH](25) + CCCC(C)[O](41) <=> H2O(42) + CCCC(C)=O(31) origin: Disproportionation
rxn: CCCCCO[O](61) + CCCCCO[O](61) <=> oxygen(1) + CCCCC=O(62) + CCCCCO(103) origin: Peroxyl_Termination
rxn: C=CC[CH]C(69) + CCCCCOO(78) <=> C=CCCC(18) + CCCCCO[O](61) origin: H_Abstraction
rxn: C=CCCC(18) + CCCCCO[O](61) <=> [CH2]C=CCC(71) + CCCCCOO(78) origin: H_Abstraction
rxn: [CH2]CCC=C(72) + CCCCCOO(78) <=> C=CCCC(18) + CCCCCO[O](61) origin: H_Abstraction
rxn: C=[C]CCC(73) + CCCCCOO(78) <=> C=CCCC(18) + CCCCCO[O](61) origin: H_Abstraction
rxn: [CH]=CCCC(74) + CCCCCOO(78) <=> C=CCCC(18) + CCCCCO[O](61) origin: H_Abstraction
rxn: CC[CH]CCOO(64) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCCCOO(78) origin: H_Abstraction
rxn: CCC[CH]COO(63) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCC[CH]OO(84) + CCCCCOO(78) <=> CCCCCO[O](61) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCCCO[O](61) + C[CH]CC(C)OO(34) <=> C=CCC(C)OO(89) + CCCCCOO(78) origin: Disproportionation
rxn: CCCC(C)[O](41) + CCCCCO[O](61) <=> CCCC(C)=O(31) + CCCCCOO(78) origin: Disproportionation
rxn: H2O(42) + C=CCCC(18) <=> CCCCCO(103) origin: 1,3_Insertion_ROR
rxn: H2O(42) + C=CCCC(18) <=> CCCC(C)O(46) origin: 1,3_Insertion_ROR
rxn: C=CC[CH]C(69) + CCCC(C)OO(27) <=> C=CCCC(18) + C[CH]CC(C)OO(34) origin: H_Abstraction
rxn: C=CCCC(18) + C[CH]CC(C)OO(34) <=> [CH2]C=CCC(71) + CCCC(C)OO(27) origin: H_Abstraction
rxn: [CH2]CCC=C(72) + CCCC(C)OO(27) <=> C=CCCC(18) + C[CH]CC(C)OO(34) origin: H_Abstraction
rxn: C=[C]CCC(73) + CCCC(C)OO(27) <=> C=CCCC(18) + C[CH]CC(C)OO(34) origin: H_Abstraction
rxn: [CH]=CCCC(74) + CCCC(C)OO(27) <=> C=CCCC(18) + C[CH]CC(C)OO(34) origin: H_Abstraction
rxn: C=CCCC(18) + CCCC(C)[O](41) <=> C=CC[CH]C(69) + CCCC(C)O(46) origin: H_Abstraction
rxn: C=CCCC(18) + CCCC(C)[O](41) <=> [CH2]C=CCC(71) + CCCC(C)O(46) origin: H_Abstraction
rxn: C=CCCC(18) + CCCC(C)[O](41) <=> [CH2]CCC=C(72) + CCCC(C)O(46) origin: H_Abstraction
rxn: C=[C]CCC(73) + CCCC(C)O(46) <=> C=CCCC(18) + CCCC(C)[O](41) origin: H_Abstraction
rxn: [CH]=CCCC(74) + CCCC(C)O(46) <=> C=CCCC(18) + CCCC(C)[O](41) origin: H_Abstraction
rxn: [OH](25) + CCCC(C)O(46) <=> H2O(42) + CCCC(C)[O](41) origin: H_Abstraction
rxn: CC[CH]CCOO(64) + CCCC(C)OO(27) <=> C[CH]CC(C)OO(34) + CCCCCOO(78) origin: H_Abstraction
rxn: CCC[CH]COO(63) + CCCC(C)OO(27) <=> C[CH]CC(C)OO(34) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCC[CH]OO(84) + CCCC(C)OO(27) <=> C[CH]CC(C)OO(34) + CCCCCOO(78) origin: H_Abstraction
rxn: CCCC(C)[O](41) + C[CH]CC(C)OO(34) <=> CCCC(C)=O(31) + CCCC(C)OO(27) origin: Disproportionation
rxn: CCCC(C)[O](41) + C[CH]CC(C)OO(34) <=> CC=CC(C)OO(88) + CCCC(C)O(46) origin: Disproportionation
rxn: CCCC(C)[O](41) + C[CH]CC(C)OO(34) <=> C=CCC(C)OO(89) + CCCC(C)O(46) origin: Disproportionation
rxn: CCCC(C)[O](41) + CCCC(C)[O](41) <=> CCCC(C)=O(31) + CCCC(C)O(46) origin: Disproportionation
rxn: [O]O(13) + CCCC(C)O(46) <=> OO(23) + CCCC(C)[O](41) origin: H_Abstraction
rxn: CCCC(C)O[O](22) + CCCC(C)OO[O](48) <=> oxygen(1) + CCCC(C)[O](41) + CCCC(C)O[O](22) origin: Peroxyl_Disproportionation
rxn: CCCC(C)O[O](22) + CCC(CC)OO[O](49) <=> oxygen(1) + CCCC(C)[O](41) + CCC(CC)O[O](20) origin: Peroxyl_Disproportionation
rxn: CCCC(C)O[O](22) + CCCCCOO[O](105) <=> oxygen(1) + CCCC(C)[O](41) + CCCCCO[O](61) origin: Peroxyl_Disproportionation
rxn: OO(23) + OOO(106) <=> [O]O(13) + [O]O(13) + H2O(42) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OOO(106) + CCCC(C)OO(27) <=> [O]O(13) + H2O(42) + CCCC(C)O[O](22) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OO(23) + CCCC(C)OOO(102) <=> [O]O(13) + H2O(42) + CCCC(C)O[O](22) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OOO(106) + CCC(CC)OO(24) <=> [O]O(13) + H2O(42) + CCC(CC)O[O](20) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OO(23) + CCC(CC)OOO(107) <=> [O]O(13) + H2O(42) + CCC(CC)O[O](20) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OOO(106) + CCCCCOO(78) <=> [O]O(13) + H2O(42) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: OO(23) + CCCCCOOO(108) <=> [O]O(13) + H2O(42) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCC(C)OO(27) + CCCC(C)OOO(102) <=> H2O(42) + CCCC(C)O[O](22) + CCCC(C)O[O](22) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCC(CC)OO(24) + CCCC(C)OOO(102) <=> H2O(42) + CCC(CC)O[O](20) + CCCC(C)O[O](22) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCC(C)OO(27) + CCC(CC)OOO(107) <=> H2O(42) + CCC(CC)O[O](20) + CCCC(C)O[O](22) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCCCOO(78) + CCCC(C)OOO(102) <=> H2O(42) + CCCC(C)O[O](22) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCC(C)OO(27) + CCCCCOOO(108) <=> H2O(42) + CCCC(C)O[O](22) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCC(CC)OO(24) + CCC(CC)OOO(107) <=> H2O(42) + CCC(CC)O[O](20) + CCC(CC)O[O](20) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCCCOO(78) + CCC(CC)OOO(107) <=> H2O(42) + CCC(CC)O[O](20) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCC(CC)OO(24) + CCCCCOOO(108) <=> H2O(42) + CCC(CC)O[O](20) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
rxn: CCCCCOO(78) + CCCCCOOO(108) <=> H2O(42) + CCCCCO[O](61) + CCCCCO[O](61) origin: Bimolec_Hydroperoxide_Decomposition
Errors occurred during edge comparison ⚠️
ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py RMS_CSTR_liquid_oxidation-edge stable_regression_results/RMS_CSTR_liquid_oxidation/chemkin/chem_edge_annotated.inp stable_regression_results/RMS_CSTR_liquid_oxidation/chemkin/species_edge_dictionary.txt test/regression/RMS_CSTR_liquid_oxidation/chemkin/chem_edge_annotated.inp test/regression/RMS_CSTR_liquid_oxidation/chemkin/species_edge_dictionary.txt` failed. (See above for error)
Details
Observables Test Case: RMS_CSTR_liquid_oxidation Comparison✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!
RMS_CSTR_liquid_oxidation Passed Observable Testing ✅
Errors occurred during observable testing ⚠️
INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/RMS_CSTR_liquid_oxidation/regression_input.py"...
INFO:root:options(
title='RMS_CSTR_liquid_oxidation',
tolerance=0.1
)
observable(
label='pentane',
structure=SMILES('CCCCC')
)
species(
label='oxygen',
structure=SMILES('[O][O]'),
)
reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([1e3], 's'),
initialMoleFractionsList=[{
'pentane': 0.9,
'oxygen': 0.1,
}],
temperatures=([600], 'K'),
pressures=([1.0], 'bar'),
)
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
Regression test fragment:
Reference: Execution time (DD:HH:MM:SS): 00:00:00:34
Current: Execution time (DD:HH:MM:SS): 00:00:00:33
Reference: Memory used: 744.77 MB
Current: Memory used: 744.98 MB
fragment Passed Core Comparison ✅
Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅
fragment Passed Edge Comparison ✅
Original model has 33 species.
Test model has 33 species. ✅
Original model has 47 reactions.
Test model has 47 reactions. ✅
Details
Observables Test Case: fragment Comparison✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!
fragment Passed Observable Testing ✅
Errors occurred during observable testing ⚠️
INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/fragment/regression_input.py"...
INFO:root:
options(
title='fragment',
tolerance=0.1
)
observable(
label="LCCCC",
structure=fragment_adj(
"""1 C u0 p0 c0 {2,S} {3,S} {5,S} {6,S}
2 C u0 p0 c0 {1,S} {4,S} {7,S} {8,S}
3 C u0 p0 c0 {1,S} {9,S} {10,S} {11,S}
4 C u0 p0 c0 {2,S} {12,S} {13,S} {14,S}
5 H u0 p0 c0 {1,S}
6 H u0 p0 c0 {1,S}
7 H u0 p0 c0 {2,S}
8 H u0 p0 c0 {2,S}
9 L u0 p0 c0 {3,S}
10 H u0 p0 c0 {3,S}
11 H u0 p0 c0 {3,S}
12 H u0 p0 c0 {4,S}
13 H u0 p0 c0 {4,S}
14 H u0 p0 c0 {4,S}
"""
),
)
species(
label="LCCCC",
structure=fragment_adj(
"""1 C u0 p0 c0 {2,S} {3,S} {5,S} {6,S}
2 C u0 p0 c0 {1,S} {4,S} {7,S} {8,S}
3 C u0 p0 c0 {1,S} {9,S} {10,S} {11,S}
4 C u0 p0 c0 {2,S} {12,S} {13,S} {14,S}
5 H u0 p0 c0 {1,S}
6 H u0 p0 c0 {1,S}
7 H u0 p0 c0 {2,S}
8 H u0 p0 c0 {2,S}
9 L u0 p0 c0 {3,S}
10 H u0 p0 c0 {3,S}
11 H u0 p0 c0 {3,S}
12 H u0 p0 c0 {4,S}
13 H u0 p0 c0 {4,S}
14 H u0 p0 c0 {4,S}
"""
),
)
species(
label="RCCCC",
structure=fragment_adj(
"""1 C u0 p0 c0 {2,S} {3,S} {5,S} {6,S}
2 C u0 p0 c0 {1,S} {4,S} {7,S} {8,S}
3 C u0 p0 c0 {1,S} {9,S} {10,S} {11,S}
4 C u0 p0 c0 {2,S} {12,S} {13,S} {14,S}
5 H u0 p0 c0 {1,S}
6 H u0 p0 c0 {1,S}
7 H u0 p0 c0 {2,S}
8 H u0 p0 c0 {2,S}
9 R u0 p0 c0 {3,S}
10 H u0 p0 c0 {3,S}
11 H u0 p0 c0 {3,S}
12 H u0 p0 c0 {4,S}
13 H u0 p0 c0 {4,S}
14 H u0 p0 c0 {4,S}
"""
),
)
reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([0.01],'s'),
initialMoleFractionsList=[{
"LCCCC": 1,
"RCCCC": 1,
}],
temperatures=([1600],'K'),
pressures=([40.0],'bar'),
)
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
WARNING:root:Initial mole fractions do not sum to one; normalizing.
INFO:root:
INFO:root:Original composition:
INFO:root:LCCCC = 1
INFO:root:RCCCC = 1
INFO:root:
INFO:root:Normalized mole fractions:
INFO:root:LCCCC = 0.5
INFO:root:RCCCC = 0.5
INFO:root:
Regression test RMS_constantVIdealGasReactor_fragment:
Reference: Execution time (DD:HH:MM:SS): 00:00:02:44
Current: Execution time (DD:HH:MM:SS): 00:00:03:11
Reference: Memory used: 2512.18 MB
Current: Memory used: 2672.61 MB
RMS_constantVIdealGasReactor_fragment Passed Core Comparison ✅
Original model has 10 species.
Test model has 10 species. ✅
Original model has 2 reactions.
Test model has 2 reactions. ✅
RMS_constantVIdealGasReactor_fragment Passed Edge Comparison ✅
Original model has 27 species.
Test model has 27 species. ✅
Original model has 24 reactions.
Test model has 24 reactions. ✅
Details
Observables Test Case: RMS_constantVIdealGasReactor_fragment Comparison✅ All Observables varied by less than 0.100 on average between old model and new model in all conditions!
RMS_constantVIdealGasReactor_fragment Passed Observable Testing ✅
Errors occurred during observable testing ⚠️
INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/RMS_constantVIdealGasReactor_fragment/regression_input.py"...
INFO:root:
options(
title='RMS_constantVIdealGasReactor_fragment',
tolerance=0.1
)
observable(
label="LCCCC",
structure=fragment_adj(
"""1 C u0 p0 c0 {2,S} {3,S} {5,S} {6,S}
2 C u0 p0 c0 {1,S} {4,S} {7,S} {8,S}
3 C u0 p0 c0 {1,S} {9,S} {10,S} {11,S}
4 C u0 p0 c0 {2,S} {12,S} {13,S} {14,S}
5 H u0 p0 c0 {1,S}
6 H u0 p0 c0 {1,S}
7 H u0 p0 c0 {2,S}
8 H u0 p0 c0 {2,S}
9 L u0 p0 c0 {3,S}
10 H u0 p0 c0 {3,S}
11 H u0 p0 c0 {3,S}
12 H u0 p0 c0 {4,S}
13 H u0 p0 c0 {4,S}
14 H u0 p0 c0 {4,S}
"""
),
)
species(
label="LCCCC",
structure=fragment_adj(
"""1 C u0 p0 c0 {2,S} {3,S} {5,S} {6,S}
2 C u0 p0 c0 {1,S} {4,S} {7,S} {8,S}
3 C u0 p0 c0 {1,S} {9,S} {10,S} {11,S}
4 C u0 p0 c0 {2,S} {12,S} {13,S} {14,S}
5 H u0 p0 c0 {1,S}
6 H u0 p0 c0 {1,S}
7 H u0 p0 c0 {2,S}
8 H u0 p0 c0 {2,S}
9 L u0 p0 c0 {3,S}
10 H u0 p0 c0 {3,S}
11 H u0 p0 c0 {3,S}
12 H u0 p0 c0 {4,S}
13 H u0 p0 c0 {4,S}
14 H u0 p0 c0 {4,S}
"""
),
)
species(
label="RCCCC",
structure=fragment_adj(
"""1 C u0 p0 c0 {2,S} {3,S} {5,S} {6,S}
2 C u0 p0 c0 {1,S} {4,S} {7,S} {8,S}
3 C u0 p0 c0 {1,S} {9,S} {10,S} {11,S}
4 C u0 p0 c0 {2,S} {12,S} {13,S} {14,S}
5 H u0 p0 c0 {1,S}
6 H u0 p0 c0 {1,S}
7 H u0 p0 c0 {2,S}
8 H u0 p0 c0 {2,S}
9 R u0 p0 c0 {3,S}
10 H u0 p0 c0 {3,S}
11 H u0 p0 c0 {3,S}
12 H u0 p0 c0 {4,S}
13 H u0 p0 c0 {4,S}
14 H u0 p0 c0 {4,S}
"""
),
)
reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([0.01],'s'),
initialMoleFractionsList=[{
"LCCCC": 1,
"RCCCC": 1,
}],
temperatures=([1600],'K'),
pressures=([40.0],'bar'),
)
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
WARNING:root:Initial mole fractions do not sum to one; normalizing.
INFO:root:
INFO:root:Original composition:
INFO:root:LCCCC = 1
INFO:root:RCCCC = 1
INFO:root:
INFO:root:Normalized mole fractions:
INFO:root:LCCCC = 0.5
INFO:root:RCCCC = 0.5
INFO:root:
Regression test minimal_surface:
Reference: Execution time (DD:HH:MM:SS): 00:00:00:32
Current: Execution time (DD:HH:MM:SS): 00:00:00:31
Reference: Memory used: 899.68 MB
Current: Memory used: 907.84 MB
minimal_surface Failed Core Comparison ❌
Original model has 11 species.
Test model has 11 species. ✅
Original model has 3 reactions.
Test model has 3 reactions. ✅
Non-identical thermo! ❌
original: COX
tested: COX
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -66.92 | 7.42 | 8.12 | 8.95 | 9.53 | 9.95 | 10.55 | 10.93 | 11.41 |
| -56.52 | 7.42 | 8.12 | 8.95 | 9.53 | 9.95 | 10.55 | 10.93 | 11.41 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: OX
tested: OX
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -31.99 | 2.89 | 4.40 | 5.00 | 5.33 | 5.51 | 5.70 | 5.78 | 5.87 |
| -25.24 | 2.89 | 4.40 | 5.00 | 5.33 | 5.51 | 5.70 | 5.78 | 5.87 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: CH4X
tested: CH4X
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -20.44 | 35.53 | 10.29 | 11.53 | 12.92 | 14.33 | 16.88 | 19.00 | 22.51 |
| -25.70 | 35.53 | 10.29 | 11.53 | 12.92 | 14.33 | 16.88 | 19.00 | 22.51 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Errors occurred during core comparison ⚠️
ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py minimal_surface-core stable_regression_results/minimal_surface/chemkin/chem_annotated.inp stable_regression_results/minimal_surface/chemkin/species_dictionary.txt test/regression/minimal_surface/chemkin/chem_annotated.inp test/regression/minimal_surface/chemkin/species_dictionary.txt` failed. (See above for error)
minimal_surface Failed Edge Comparison ❌
Original model has 38 species.
Test model has 38 species. ✅
Original model has 38 reactions.
Test model has 38 reactions. ✅
Non-identical thermo! ❌
original: COX
tested: COX
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -66.92 | 7.42 | 8.12 | 8.95 | 9.53 | 9.95 | 10.55 | 10.93 | 11.41 |
| -56.52 | 7.42 | 8.12 | 8.95 | 9.53 | 9.95 | 10.55 | 10.93 | 11.41 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: OX
tested: OX
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -31.99 | 2.89 | 4.40 | 5.00 | 5.33 | 5.51 | 5.70 | 5.78 | 5.87 |
| -25.24 | 2.89 | 4.40 | 5.00 | 5.33 | 5.51 | 5.70 | 5.78 | 5.87 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: HX
tested: HX
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -6.37 | 1.01 | 2.49 | 3.51 | 4.19 | 4.64 | 5.16 | 5.43 | 5.70 |
| -8.60 | 1.01 | 2.49 | 3.51 | 4.19 | 4.64 | 5.16 | 5.43 | 5.70 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: CH3X
tested: CH3X
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -11.28 | 9.22 | 8.64 | 10.56 | 12.16 | 13.49 | 15.61 | 17.25 | 19.89 |
| -14.31 | 9.22 | 8.64 | 10.56 | 12.16 | 13.49 | 15.61 | 17.25 | 19.89 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: HOX
tested: HOX
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -35.92 | 17.09 | 8.24 | 8.88 | 9.24 | 9.46 | 9.76 | 10.02 | 10.61 |
| -34.90 | 17.55 | 5.70 | 6.36 | 6.80 | 7.11 | 7.54 | 7.88 | 8.55 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: CX
tested: CX
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| 14.02 | 1.46 | 3.22 | 4.16 | 4.73 | 5.07 | 5.44 | 5.61 | 5.79 |
| 17.67 | 1.46 | 3.22 | 4.16 | 4.73 | 5.07 | 5.44 | 5.61 | 5.79 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: CH2X
tested: CH2X
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| 0.19 | 5.32 | 6.86 | 8.73 | 10.08 | 11.08 | 12.55 | 13.62 | 15.33 |
| -0.61 | 5.32 | 6.86 | 8.73 | 10.08 | 11.08 | 12.55 | 13.62 | 15.33 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: CHX
tested: CHX
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -5.51 | 2.75 | 5.28 | 6.78 | 7.74 | 8.38 | 9.22 | 9.78 | 10.64 |
| -4.09 | 2.75 | 5.28 | 6.78 | 7.74 | 8.38 | 9.22 | 9.78 | 10.64 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: CH4X
tested: CH4X
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -20.44 | 35.53 | 10.29 | 11.53 | 12.92 | 14.33 | 16.88 | 19.00 | 22.51 |
| -25.70 | 35.53 | 10.29 | 11.53 | 12.92 | 14.33 | 16.88 | 19.00 | 22.51 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: CO2XX
tested: CO2XX
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -129.65 | 10.75 | 10.69 | 12.48 | 14.02 | 15.18 | 16.38 | 16.72 | 17.85 |
| -90.85 | 9.47 | 9.51 | 10.97 | 12.29 | 13.36 | 14.62 | 15.09 | 16.09 |
thermo: Gas phase thermo for CO2 from Thermo library: thermo_DFT_CCSDTF12_BAC. Adsorption correction: + Thermo group additivity estimation: adsorptionPt111(CO)
thermo: Gas phase thermo for CO2 from Thermo library: thermo_DFT_CCSDTF12_BAC. Adsorption correction: + Thermo group additivity estimation: adsorptionPt111(C-XRO-X)
Non-identical thermo! ❌
original: COXX
tested: COXX
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -105.34 | 1.78 | 7.40 | 8.36 | 9.29 | 10.05 | 10.84 | 11.05 | 11.91 |
| -73.25 | 2.61 | 5.89 | 6.67 | 7.51 | 8.22 | 8.91 | 9.01 | 9.83 |
thermo: Gas phase thermo for CO from Thermo library: primaryThermoLibrary. Adsorption correction: + Thermo group additivity estimation: adsorptionPt111(R*bidentate)
thermo: Gas phase thermo for CO from Thermo library: primaryThermoLibrary. Adsorption correction: + Thermo group additivity estimation: adsorptionPt111(RXbidentate)
Non-identical thermo! ❌
original: XOXO
tested: XOXO
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -25.60 | 9.14 | 9.12 | 10.07 | 10.65 | 10.99 | 11.37 | 11.55 | 11.74 |
| -13.14 | 10.90 | 9.10 | 10.02 | 10.59 | 10.94 | 11.34 | 11.53 | 11.73 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: O2(S)X
tested: O2(S)X
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| 9.16 | 19.16 | 8.74 | 9.20 | 9.57 | 9.87 | 10.33 | 10.66 | 11.08 |
| 9.64 | 18.24 | 6.40 | 6.79 | 7.23 | 7.64 | 8.16 | 8.38 | 8.91 |
thermo: Gas phase thermo for O2(S) from Thermo library: primaryThermoLibrary. Adsorption correction: + Thermo group additivity estimation: adsorptionPt111(R*vdW)
thermo: Gas phase thermo for O2(S) from Thermo library: primaryThermoLibrary. Adsorption correction: + Thermo group additivity estimation: adsorptionPt111(RXvdW)
Non-identical thermo! ❌
original: HC(O)XO
tested: HC(O)XO
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -88.44 | 16.37 | 12.74 | 14.53 | 16.02 | 17.25 | 19.06 | 20.27 | 21.90 |
| -73.52 | 16.37 | 12.74 | 14.53 | 16.02 | 17.25 | 19.06 | 20.27 | 21.90 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: XCHO
tested: XCHO
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -53.80 | 14.59 | 9.35 | 10.71 | 11.79 | 12.66 | 13.97 | 14.88 | 16.19 |
| -45.63 | 14.59 | 9.35 | 10.71 | 11.79 | 12.66 | 13.97 | 14.88 | 16.19 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: CH3XCO
tested: CH3XCO
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -69.07 | 26.52 | 13.22 | 15.97 | 18.33 | 20.33 | 23.43 | 25.69 | 29.07 |
| -61.70 | 26.52 | 13.22 | 15.97 | 18.33 | 20.33 | 23.43 | 25.69 | 29.07 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical thermo! ❌
original: XOCH3
tested: XOCH3
| Hf(300K) | S(300K) | Cp(300K) | Cp(400K) | Cp(500K) | Cp(600K) | Cp(800K) | Cp(1000K) | Cp(1500K) |
|---|---|---|---|---|---|---|---|---|
| -37.74 | 21.40 | 10.09 | 12.19 | 14.08 | 15.75 | 18.42 | 20.42 | 23.48 |
| -35.47 | 23.21 | 10.17 | 12.28 | 14.20 | 15.89 | 18.58 | 20.59 | 23.63 |
Identical thermo comments:
thermo: Thermo library: surfaceThermoPt111
Non-identical kinetics! ❌
original:
rxn: X(3) + CO2X(4) <=> CO2XX(23) origin: Surface_vdW_to_Bidentate
tested:
rxn: X(3) + CO2X(4) <=> CO2XX(23) origin: Surface_vdW_to_Bidentate
| k(1bar) | 300K | 400K | 500K | 600K | 800K | 1000K | 1500K | 2000K |
|---|---|---|---|---|---|---|---|---|
| k(T): | 17.60 | 17.60 | 17.60 | 17.60 | 17.60 | 17.60 | 17.60 | 17.60 |
| k(T): | 15.04 | 15.68 | 16.07 | 16.32 | 16.64 | 16.83 | 17.09 | 17.22 |
kinetics: SurfaceArrhenius(A=(4e+21,'cm^2/(mol*s)'), n=0, Ea=(0,'kcal/mol'), T0=(1,'K'), comment="""From training reaction 1 used for Combined;VacantSite Exact match found for rate rule [Combined;VacantSite] Euclidian distance = 0 Multiplied by reaction path degeneracy 4.0 family: Surface_vdW_to_Bidentate""")
kinetics: SurfaceArrhenius(A=(4e+21,'cm^2/(mol*s)'), n=0, Ea=(3.515,'kcal/mol'), T0=(1,'K'), comment="""From training reaction 1 used for Combined;VacantSite Exact match found for rate rule [Combined;VacantSite] Euclidian distance = 0 Multiplied by reaction path degeneracy 4.0 family: Surface_vdW_to_Bidentate Ea raised from 0.0 to 14.7 kJ/mol to match endothermicity of reaction.""")
kinetics: From training reaction 1 used for Combined;VacantSite
Exact match found for rate rule [Combined;VacantSite]
Euclidian distance = 0
Multiplied by reaction path degeneracy 4.0
family: Surface_vdW_to_Bidentate
kinetics: From training reaction 1 used for Combined;VacantSite
Exact match found for rate rule [Combined;VacantSite]
Euclidian distance = 0
Multiplied by reaction path degeneracy 4.0
family: Surface_vdW_to_Bidentate
Ea raised from 0.0 to 14.7 kJ/mol to match endothermicity of reaction.
Non-identical kinetics! ❌
original:
rxn: X(3) + X(3) + CO2(13) <=> OX(6) + COX(5) origin: Surface_Adsorption_Dissociative_Double
tested:
rxn: X(3) + X(3) + CO2(13) <=> OX(6) + COX(5) origin: Surface_Adsorption_Dissociative_Double
| k(1bar) | 300K | 400K | 500K | 600K | 800K | 1000K | 1500K | 2000K |
|---|
Errors occurred during edge comparison ⚠️
Traceback (most recent call last):
File "/home/runner/work/RMG-Py/RMG-Py/scripts/checkModels.py", line 301, in
error = main()
^^^^^^
File "/home/runner/work/RMG-Py/RMG-Py/scripts/checkModels.py", line 78, in main
error = check(name, bench_chemkin, bench_species_dict, test_chemkin, test_species_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/RMG-Py/RMG-Py/scripts/checkModels.py", line 99, in check
error_reactions = checkReactions(common_reactions, unique_reactions_test, unique_reactions_orig)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/runner/work/RMG-Py/RMG-Py/scripts/checkModels.py", line 206, in checkReactions
[printRates(rxn) for rxn in [rxn1, rxn2]]
File "/home/runner/work/RMG-Py/RMG-Py/scripts/checkModels.py", line 206, in
[printRates(rxn) for rxn in [rxn1, rxn2]]
^^^^^^^^^^^^^^^
File "/home/runner/work/RMG-Py/RMG-Py/scripts/checkModels.py", line 236, in printRates
math.log10(rxn.kinetics.get_rate_coefficient(300, 1e5)),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "rmgpy/kinetics/model.pyx", line 195, in rmgpy.kinetics.model.KineticsModel.get_rate_coefficient
cpdef double get_rate_coefficient(self, double T, double P=0.0) except -1:
File "rmgpy/kinetics/model.pyx", line 201, in rmgpy.kinetics.model.KineticsModel.get_rate_coefficient
raise NotImplementedError('Unexpected call to KineticsModel.get_rate_coefficient(); '
NotImplementedError: Unexpected call to KineticsModel.get_rate_coefficient(); you should be using a class derived from KineticsModel.
ERROR conda.cli.main_run:execute(148): `conda run python scripts/checkModels.py minimal_surface-edge stable_regression_results/minimal_surface/chemkin/chem_edge_annotated.inp stable_regression_results/minimal_surface/chemkin/species_edge_dictionary.txt test/regression/minimal_surface/chemkin/chem_edge_annotated.inp test/regression/minimal_surface/chemkin/species_edge_dictionary.txt` failed. (See above for error)
Details
Observables Test Case: minimal_surface ComparisonThe following observables did not match:
❌ Observable species [Pt] varied by more than 0.500 on average between old model X(3) and new model X(3) in condition 1.
Condition 1:
Reactor Type: IdealGasReactor
Reaction Time: 1 s
T0: 1000 K
P0: 1 bar
Initial Mole Fractions: {'C': 0.15, '[O][O]': 0.15, 'N#N': 0.7}
minimal_surface Failed Observable Testing ❌
Errors occurred during observable testing ⚠️
INFO:root:Reading input file "/home/runner/work/RMG-Py/RMG-Py/test/regression/minimal_surface/regression_input.py"...
INFO:root:options(
title = 'minimal_surface',
tolerance = 0.5,
)
observables
observable(
label = 'CH4',
structure=SMILES('C'),
)
observable(
label = 'O2',
structure=SMILES('[O][O]'),
)
observable(
label = 'X',
structure=adjacencyList(
"""
1 X u0 p0 c0
"""),
)
List of species
species(
label='CH4',
structure=SMILES("[CH4]"),
)
species(
label='O2',
structure=adjacencyList(
"""
1 O u1 p2 c0 {2,S}
2 O u1 p2 c0 {1,S}
"""),
)
species(
label='N2',
structure=SMILES("N#N"),
)
species(
label='X',
structure=adjacencyList(
"""
1 X u0 p0 c0
"""),
)
reactor setups
reactorSetups(
reactorTypes=['IdealGasReactor'],
terminationTimes=([1.0], 's'),
initialMoleFractionsList=[{
'CH4': 0.15,
'O2': 0.15,
'N2': 0.7,
}],
initialSurfaceMoleFractionsList=[{
'X': 1.0,
}],
temperatures=([1000.0], 'K'),
pressures=([1.0], 'bar'),
)
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has default temperature range 300.0 to 1000.0 and 1000.0 to 5000.0
INFO:root:Thermo file has no default temperature ranges
INFO:root:(The line it would be on is ' 300.000 1000.000 5000.000\n' but that is not formatted as such)
INFO:root:(It should have Tmin in columns 1-10, Tmid in columns 11-20, and Tmax in columns 21-30)
INFO:root:Ignoring short but non-empty line: ' 300.000 1000.000 5000.000\n'
INFO:root:Thermo file has no default temperature ranges
INFO:root:(The line it would be on is ' 300.000 1000.000 5000.000\n' but that is not formatted as such)
INFO:root:(It should have Tmin in columns 1-10, Tmid in columns 11-20, and Tmax in columns 21-30)
INFO:root:Ignoring short but non-empty line: ' 300.000 1000.000 5000.000\n'
/home/runner/work/RMG-Py/RMG-Py/rmgpy/tools/canteramodel.py:550: UserWarning: ReactorSurface::syncState: Behavior changed in Cantera 3.2 for consistency with ReactorBase. To set SurfPhase state from ReactorSurface object, use restoreState().
species_data.append(np.concatenate((cantera_reactor.thermo[species_names_list].X, rsurf.kinetics.coverages)))
ERROR conda.cli.main_run:execute(148): conda run python rmgpy/tools/regression.py test/regression/minimal_surface/regression_input.py stable_regression_results/minimal_surface/chemkin test/regression/minimal_surface/chemkin failed. (See above for error)
beep boop this comment was written by a bot 🤖
Motivation or Problem
The Cantera yaml output files written in RMG had some errors when loaded into Cantera.
CanteraError thrown by Phase::addSpecies: Species 'vacantX(3)' contains an undefined element 'X'.and also does not specify the sites correctly, giving and errorNumber of surface sites not balanced in reaction HOCOXX(73) <=> OX(6) + XCOH(54).Once fixes were applied to load mechanisms into Cantera without errors, the comparison file generated at the end of the RMG run revealed some differences.
Description of Changes
The "state" field was populated in each place it was missing for the rmg writer but present in ck2yaml. The species transport note had been turned off for the non-annotated yaml files, so this condition was removed to be consistent with ck2yaml. The gas and surface reactions were separated for surface mechanisms for the cantera2 method, which enabled the comparison method. The cantera1 logic was modified for use in cantera2 to specify custom elements. For surface species, "sites" was populated in cantera2 by counting the X atoms. To combat the duplication of species from Cantera's reaction definition, the equation was composed manually from reactants and products.
Testing
I was using this input file for methane partial oxidation: input.py which writes Cantera yaml for both methods. The comparison text files generated were used to identify differences between ck2yaml method and the RMG yaml writers. Claude was used to help make some tests that the missing fields were present and that generated yamls agree with the ck2yaml method. The new and existing tests seem to be working for me as far as I can tell.